package 数据结构练习.summer;

import java.util.HashSet;
import java.util.Set;
//copy
public class day4 {
    /*
    编写一个算法来判断一个数 n 是不是快乐数。
    https://leetcode.cn/problems/happy-number/
     */
    private int getNext(int n) {
        int totalSum = 0;
        while (n > 0) {
            int d = n % 10;
            n = n / 10;
            totalSum += d * d;
        }
        return totalSum;
    }

    public boolean isHappy(int n) {
        Set<Integer> seen = new HashSet<>();
        while (n != 1 && !seen.contains(n)) {
            seen.add(n);
            n = getNext(n);
        }
        return n == 1;
    }


    /*
    丑数 就是只包含质因数 2、3 和 5 的正整数。
    给你一个整数 n ，请你判断 n 是否为 丑数 。
    如果是，返回 true ；否则，返回 false 。
     */
    public boolean isUgly(int n) {
        if (n <= 0) {
            return false;
        }
        int[] factors = {2, 3, 5};
        for (int factor : factors) {
            while (n % factor == 0) {
                n /= factor;
            }
        }
        return n == 1;
    }
}
